import { reactive } from 'vue';

/**
 * 规则
 */
export const sourceRule = reactive({
  siteName: '', // 站点名称
  status: true, // 状态
  finderStatus: false, // 发现状态
  version: 1, // 版本号
  host: '', // 站点地址
  author: '', // 作者
  contact: '', // 联系方式
  header: '', // 请求头
  publicJavascript: '', // 公共请求js
  loginUrl: '', // 登录地址
  remarks: '', // 备注
  // 发现规则
  ruleFinder: [],
  // 搜索规则
  ruleSearch: {
    mode: 'http', // 请求模式
    preRequests: '', // 前置请求规则
    header: '', // 请求头
    url: '', // 搜索地址
    params: '', // 请求参数
    forbidCookie: false, // 是否禁用cookie
    method: 'GET', // 请求方式
    engine: 'xpath', // 解析方式
    request: '', // 请求信息
    requestEncode: 'utf-8', // 请求编码
    response: '', // 响应信息
    responseEncode: 'utf-8', // 响应编码
    bookList: '', // 搜索列表
    bookName: '', // 书籍名称
    bookUrl: '', // 书籍地址
    bookAuthor: '', // 书籍作者
    // 追加规则
    ruleExtra: {
      bookSize: '', // 书籍大小
      classify: '', // 书籍分类
      coverUrl: '', // 书籍封面
      introduce: '', // 书籍简介
      lastChapterName: '', // 最新一章的名称
      lastUpdateTime: '', // 最近的更新时间
      status: '', // 书籍状态，完本、连载中
    },
  },
  ruleBookInfo: {
    mode: 'http', // 请求模式
    engine: 'xpath', // 解析方式
    method: 'GET', // 请求方式
    forbidCookie: false,
    params: '',
    header: '',
    request: '', // 请求信息
    requestEncode: 'utf-8', // 请求编码
    response: '', // 响应信息
    responseEncode: 'utf-8', // 响应编码
    chapterListUrl: '', // 章节地址
    bookAuthor: '', // 作者
    bookName: '', // 书本名称
    ruleExtra: {
      bookSize: '',
      classify: '',
      coverUrl: '',
      introduce: '',
      lastChapterName: '',
      lastUpdateTime: '',
      status: '',
    },
  },
  // 章节规则
  ruleChapter: {
    mode: 'http', // 请求模式
    chapterList: '',
    chapterName: '',
    chapterUrl: '',
    engine: 'xpath',
    method: 'GET',
    forbidCookie: false,
    params: '',
    preRequests: '',
    header: '',
    request: '',
    requestEncode: 'utf-8',
    response: '',
    page: '',
    next: '',
    responseEncode: 'utf-8',
    ruleExtra: {
      bookSize: '',
      classify: '',
      coverUrl: '',
      introduce: '',
      lastChapterName: '',
      lastUpdateTime: '',
      status: '',
    },
  },
  // 内容规则
  ruleContent: {
    mode: 'http', // 请求模式
    engine: 'xpath', // 解析方式
    method: 'GET', // 请求方式
    next: '', // 是否有下一页
    page: '', // 总共页数
    contents: '', // 内容规则
    forbidCookie: false,
    params: '',
    preRequests: '',
    header: '',
    request: '', // 请求信息
    requestEncode: 'utf-8', // 请求编码
    response: '', // 响应信息
    responseEncode: 'utf-8', // 响应编码
    cleaner: '', // 净化规则
  },
});

/**
 * 发现规则
 */
export const sourceFinderRule = reactive({
  uuid: '',
  mode: 'http', // 请求模式
  name: '', // 分类名称
  method: 'GET', // 请求类型
  params: '', // 请求参数
  pageMax: '30', // 最大翻页数
  header: '', // 请求头
  request: '', // 请求信息
  response: '', // 响应信息
  requestEncode: 'utf-8',
  responseEncode: 'utf-8',
  structure: '', // 构造体
  list: [] as any[],
  engine: 'xpath', // 解析方式
  bookList: '', // 书籍列表
  bookName: '', // 书籍名称
  bookUrl: '', // 书籍地址
  bookAuthor: '', // 书籍作者
  // 追加规则
  ruleExtra: {
    bookSize: '', // 书籍大小
    classify: '', // 书籍分类
    coverUrl: '', // 书籍封面
    introduce: '', // 书籍简介
    lastChapterName: '', // 最新一章的名称
    lastUpdateTime: '', // 最近的更新时间
    status: '', // 书籍状态，完本、连载中
  },
});

/**
 * 规则中为对象的字段
 */
export const sourceRuleObjectField = reactive({
  header: {}, // 公共请求头
  cookie: {}, // 公共请求cookie
  ruleSearch: {
    header: {}, // 请求头
    params: {}, // 请求参数
    preRequests: {}, // 前置请求
  },
  ruleBookInfo: {
    header: {}, // 请求头
    params: {}, // 请求参数
  },
  ruleChapter: {
    header: {}, // 请求头
    params: {}, // 请求参数
    preRequests: {}, // 前置请求
  },
  ruleContent: {
    header: {}, // 请求头
    params: {}, // 请求参数
    preRequests: {}, // 前置请求
  },
  status: true,
  finderStatus: false,
});
